1、字符串的排列，不能有重复的
思想：标准的dfs，定义一个标记vector，记录每个元素是否使用，然后回溯；但是得去重，就是针对数组中有相同元素  得去重。
class Solution {
public:
    vector<string> v;
    string str;
    void dfs(string& s,vector<int>& book)
    {   
        if(str.size()==s.size())
        {
            v.push_back(str);
            return ;
        }
        for(int i=0;i<s.size();i++)
        {
            if(book[i]||(i>0&&(book[i-1]&&s[i]==s[i-1])))
                continue;
            if(book[i]==0)
            {
                book[i]=1;
                str.push_back(s[i]);
                dfs(s,book);
                book[i]=0;
                str.pop_back();
            }
        }
    }
    vector<string> permutation(string s) {
        if(s.empty())
            return v;
        vector<int> book(s.size(),0);
        dfs(s,book);
        return v;
    }
};